Technique for high speed PRBS generation

ABSTRACT

A method and a generator are described for high speed generation of an S-bit long pattern of a PRBS sequence to be periodically burst on to a bus of width S. The technique provides the calculation time being independent from the width S of the bus, and comprises calculation of all S bits of the PRBS pattern separately and in parallel by using previous PRBS patterns stored in a memory. For each bit to be generated, the generator performs a constant number N of logical operations required (by a polynomial defining the PRBS sequence.

FIELD OF THE INVENTION

[0001] The invention relates to a technique for generating Pseudo Random Binary Sequence (PRBS) for a wide bus (the bus having a large number S of binary positions to be transmitted in parallel), i.e. to a method and a device for periodically creating and transmitting a pseudo-random pattern comprising S bits.

BACKGROUND OF THE INVENTION

[0002] Creation of a PRBS is usually explained and implemented as applying a polynomial to a binary sequence; it can be illustrated by applying a number of XOR (exclusive OR) operations to a binary shift register.

[0003]FIG. 1 shows a simple model for PRBS generation illustrating a shift register 10 comprising one XOR unit 12 which performs a logical operation of exclusive OR with the 11^(th) and 9^(th) positions of the register to introduce the result in the 0-th position of the register. The output of the register issues a PRBS bit sequence.

[0004] The process of forming the bit sequence can be described by the following polynomial having two terms (i.e., w=2, not including the “1”):

P=1+X ⁹ +X ¹¹

[0005] According to the above polynomial, each position a_(i) in the PRBS bit sequence can be formed as follows, using (w−1) XOR operations:

a _(i) =a _(i−9) ⊕a _(i−11)

[0006] Using indexes n_(j) of complexity of a polynomial:

a _(i) =a _(i−n) ₀ ⊕a _(i−n) _(j)

[0007] where n₀=9, n₁=11,

[0008] we may write down the process of forming a PRBS based on any given polynomial: $\begin{matrix} \begin{matrix} {{p = {1 + {\sum\limits_{0 \leq j < w}\quad x^{n_{j}}}}};} \\ {a_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - n_{j}}}} \end{matrix} & (1) \end{matrix}$

[0009] As it has been accepted by now, the greater the “w” parameter, the wider the bus (i.e., the greater the number of the “S” parameter), the more complex the PRBS generation process will be from the point of time and memory consumption.

[0010] The above statement could be explained by the fact that, for forming any next binary position of the PRBS sequence, some particular previous binary positions of the PRBS sequence should be used. Based on the conventional model of the PRBS generation, one cannot calculate a following position of the PRBS sequence before the required previous positions of the sequence become known. However, the previous positions are also to be calculated based on some pre-previous positions of the PRBS stream. Consequently, if all S positions of a rather long pattern of PRBS sequence is to be created during one and the same generator's clock, this clock would most probably include a considerable number of iterative calculations (and a chain of XORs in the implementation) which means that a high speed clock is hardly achievable for wide buses.

[0011] In case the PRBS sequence be wholly stored in the memory, so that patterns of the sequence be issued just by reading them from the memory one after another, the memory would be excessively large since the periodicity of a complex PRBS pattern is quite great and is equal to 2^(K)−1, where K=n_(w−1).

[0012] U.S. Pat. No. 5,034,906 describes a system for synchronizing a pseudorandom binary sequence signal with a time-delayed version of the same signal without the use of delay lines or programmable counters. This is accomplished by the use of two Pseudorandom Binary Sequence [PRBS] generators for producing the same PRBS signal. Each PRBS generator incorporates as a constituent component a serial shift register with M stages with the outputs of multiple stages fed back through can exclusive-OR to provide an input to the register, thereby to produce a clocked repetitive series of said sequence signal as inputs to each register. The states of shift register are numbered n such that (n−1) clock cycles elapse before the next start state. A start detect circuit is responsive to the start state of the pseudorandom binary sequence signal of the first generator for generating a synchronizing signal at that instant to force the second PRBS generator to be at a state in the binary sequence representing a delayed point in the sequence.

[0013] The solution of U.S. Pat. No. 5,034,906 is focussed on synchronizing the sequence. It should be mentioned, however, that the principle of a serial shift register does not allow obtaining a high speed wide bus PRBS generator.

OBJECT OF THE INVENTION

[0014] The main object of the invention is to achieve generation of quite a wide (S-bit long) pattern during a minimal “time clock” of the generator, i.e. to provide a method and a device for high speed PRBS generation. An additional object of the invention is to provide a high speed PRBS generator with effective capacity of the memory.

SUMMARY OF THE INVENTION

[0015] The Inventors propose a novel solution of a high speed PRBS generator for a wide bus having width S (i.e., a parallel generator of S-long PRBS patterns) which is capable of performing calculations required for preparing an S-long PRBS pattern without any iterations, i.e., enables obtaining all bits of the PRBS pattern in parallel by performing for each bit a constant number N of logical operations according to a given polynomial, thus achieving the shortest possible clock period of the generator.

[0016] The term “PRBS pattern” is used for defining a part of a PRBS sequence to be calculated and transmitted in parallel.

[0017] Keeping in mind the facts that the pattern is calculated per bit, that the process is parallel, and that the number N of logical operations required for each bit of the pattern is constant, one may conclude that the complexity of processing is independent from the length S of the pattern (or from the width S of the bus).

[0018] Preferably, this constant number N is the minimal number of operations required by the given polynomial.

[0019] Speaking exactly, if the number of members of the given polynomial is w, the minimal number of logical operations (XORs) to be performed per bit of the pattern is equal to w−1. The minimal clock will be therefore limited by w−1 XOR operations. The total minimal number of XOR circuits for the pattern will be S(w−1).

[0020] It should be mentioned, however, that the XOR operations do not have to be performed in sequence, i.e., in most cases some of them may be done in parallel. Therefore, the minimal time for per-bit calculation, measured in XORs (time for performing one XOR operation) is O(log w) where O is constant.

[0021] The Inventors have therefore found that the high speed PRBS generator can be built if, per one bit of the S-bit long PRBS pattern, there is used a group of devices comprising the constant (and even a minimal number “w−1”) of XORs, and if all S groups of XORs are operative simultaneously, thus providing for a shortened (and even the minimal) time clock.

[0022] For implementing the above-proposed generator, its memory is to be built as a number of S-long registers for storing previously issued PRBS patterns, and should be used in a special manner.

[0023] The Inventors proved a Lemma which allows converting the expression (1) for creating a PRBS pattern based on a given polynomial, into a form which enables avoiding iterative calculations of bits of the PRBS by effectively utilizing the memory.

[0024] The Lemma states: $\begin{matrix} {a_{i} = {\left. {\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - n_{j}}}\Rightarrow a_{i} \right. = {\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - {2^{t}n_{j}}}}}} & (2) \end{matrix}$

[0025] The Lemma can be proven by induction as follows:

[0026] For t=0: $a_{i} = {{\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - {2^{0} \cdot n_{j}}}} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - n_{j}}}}$

$\begin{matrix} \begin{matrix} {{Assumption}\quad {for}\quad {t:}} & {a_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - {2^{t} \cdot n_{j}}}}} \\ {{{step}\quad {to}\quad z} = {{t + 1}:}} & {a_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - {2^{t} \cdot n_{j}}}}} \end{matrix} \\ {a_{i - {2^{t} \cdot n_{j}}} = {{\sum\limits_{0 \leq k < w}^{\oplus}\quad a_{{({i - {2^{t} \cdot n_{j}}})} - {2^{t} \cdot n_{k}}}} = {\sum\limits_{0 \leq k < w}^{\oplus}\quad a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}}} \\ {a_{i} = {{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{0 \leq k < w}^{\oplus}\quad a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}} = {\underset{\underset{I}{}}{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{k = j}^{\oplus}a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}} \oplus \underset{\underset{II}{}}{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{0 \leq k \neq j < w}^{\oplus}a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}}}}} \\ \begin{matrix} {I = {{\sum\limits_{0 \leq j < w}^{\oplus}\quad a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{j}}}} = {{\sum\limits_{0 \leq j < w}^{\oplus}a_{i - {2^{t + 1} \cdot n_{j}}}} = {\sum\limits_{0 \leq j < w}^{\oplus}a_{i - {2^{z} \cdot n_{j}}}}}}} \\ {{II} = {\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{j < k < w}^{\oplus}{a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}} \oplus \underset{III}{\underset{}{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{0 \leq k < j}^{\oplus}a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}}}}}}} \\ {{III} = {{\sum\limits_{0 \leq k < w}^{\oplus}{\sum\limits_{j < k < w}^{\oplus}a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{j}}}}}\underset{k\leftrightarrow j}{\underset{}{=}}{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{k < j < w}^{\oplus}a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{j}}}}}}} \\ {{II} = {{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{j < k < w}^{\oplus}{a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}} \oplus {\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{j < k < w}^{\oplus}a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}}}}} =}} \\ {= {{\sum\limits_{0 \leq j < w}^{\oplus}{\sum\limits_{j < k < w}^{\oplus}{a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}} \oplus a_{i - {2^{t} \cdot n_{j}} - {2^{t} \cdot n_{k}}}}}} = 0}} \\ {a_{i} = {{\sum\limits_{0 \leq j < w}^{\oplus}{a_{i - {2^{z} \cdot n_{j}}} \oplus 0}} = {\sum\limits_{0 \leq j < w}^{\oplus}a_{i - {2^{z} \cdot n_{j}}}}}} \end{matrix} \end{matrix}$

[0027] The meaning of the Lemma is that instead of sequentially calculating every bit of a PRBS pattern using previous bits of this same pattern, one may perform separate calculation of each bit of the pattern based on “pre-previous” bits of the PRBS pattern, if stored in a memory. The degree of retroaction is measured by the power “t” (retrospective index); it can be selected so that all bits of the current PRBS pattern, including those requiring the longest history, be formed using the memory.

[0028] However, different “t” values can be selected for calculating different bits of the current PRBS pattern, and that finding can be utilized for minimizing the required memory capacity.

[0029] In other words, for the S-bit PRBS pattern built for a S-width bus B: $\begin{matrix} {b_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad M_{i - {2^{t}n_{j}}}}} & (3) \end{matrix}$

[0030] where

[0031] bi—is a running bit of the bus B comprising (b₀,b₁, . . . b_(i) . . . B_(S−1))

[0032] M_(i)—is a running bit of memory M; it has a negative index expressing how old is the memory bit regarding to the corresponding current bit of the PRBS pattern created on the bus;

[0033] t—is a retrospective index selected so as to find the bit (2^(t) n_(j)), ready in the memory, for a specific bit b_(i) of the current PRBS pattern.

[0034] Keeping in mind, that the memory comprises a number of S-long registers for storing previous issued PRBS patterns, it can be further clarified that any current created PRBS pattern is shifted, in parallel, into the memory and in the memory, which fact can be written down as follows: $\begin{matrix} {M_{i} = \left| \begin{matrix} {{b_{{i + s}\quad}\quad {if}\quad i} \geq {- s}} \\ {{M_{i + s}\quad {if}\quad i} < {- s}} \end{matrix} \right.} & (4) \end{matrix}$

[0035] Moreover, the Inventors estimated the effective capacity of the PRBS generator's memory based on the required length S of the pattern, value of “t” and complexity of the polynomial which is expressed by the parameter n_(J).

[0036] It has been found that the minimal value of “t” sufficient for forming any bit of the S-bit PRBS pattern by parallel calculation of all the bits (when one and the same “t” is used) will be: $\begin{matrix} {t_{m} = \left\lceil {\log_{2}\frac{s}{n_{0}}} \right\rceil} & (5) \end{matrix}$

[0037] where n_(w−1)>n_(w−2)> . . . >n₀

[0038] Since the term of the polynomial having the complexity index n_(w−1) requires the most “deep” use of the memory, the memory capacity (in bits) C can be calculated as follows: $\begin{matrix} {c = {{2^{t_{m}} \cdot n_{w - 1}} = {2^{\lceil{\log_{2}\frac{s}{n_{0}}}\rceil} \cdot n_{w - 1}}}} & (6) \end{matrix}$

[0039] The Inventors have shown that since different “t” values can be used for calculating different bits of the PRBS, the memory capacity can be further reduced:

c′=2^(t) ^(_(m)) ·n _(w−1)−2^(t) ^(_(m)) ⁻¹ =c−2^(t) ^(_(m)) ⁻¹  (7)

[0040] Indeed, not all bits of the PRBS pattern require the same depth of the memory; for example, for bit b₀ the minimal t=0 can be used, i.e. the previous PRBS pattern just stored in the memory.

BRIEF DESCRIPTION OF THE DRAWINGS

[0041] The invention can be better understood with the aid of the following non-limiting drawings in which:

[0042]FIG. 1 illustrates a conventional model for obtaining a PRBS sequence

[0043]FIG. 2 illustrates a schematic block diagram of one embodiment of the proposed PRBS generator

[0044]FIG. 3 gives an illustrative example of obtaining a PRBS pattern for an S-wide bus using the generator shown in FIG. 2.

DESCRIPTION OF PREFERRED EMBODIMENTS

[0045]FIG. 2 illustrates a schematic block-diagram of one embodiment of the PRBS generator 14 according to the invention, which also explains the proposed method.

[0046] The generator 14 comprises a memory 16 and is connected to an S-bit wide bus 15 to create on it a PRBS pattern in the form of a parallel burst of bits. For synchronizing purposes only, a register 17 can be added between the generator and the bus. Each bit of the bus 15 is calculated using the memory 16 and an assembly 18 of logical units performing XOR operations and associated with a particular bit of the bus. There are S such assemblies capable of working in parallel, and they form part of the generator 14. In the drawing, each assembly 18 comprises only one XOR unit; it should be understood that more complex assemblies will be used if a more complex polynomial is given for creating the required PRBS pattern.

[0047] The memory 16 comprises a plurality of registers, capable of performing parallel shift from the top register 22 to the direction of the bottom register 24. Each of the registers stores a particular PRBS pattern (a part of the PRBS sequence); the “freshest” pattern is introduced in the memory upon completing its calculation (see arrows 26) and simultaneously with bursting it on to the bus 15, while the “oldest” pattern is erased from the bottom pattern 24 due to feeding there-into a “fresher” pattern from the adjacent register. The process is controlled by a clock 20.

[0048] For calculating a specific bit of a PRBS pattern, the corresponding assembly 18 uses particular bits in the memory which are located in previous PRBS patterns. The required memory bits for each particular PRBS bit (bit of the bus) can be found using the Lemma, equation (3) and upon selecting the retrospective index “t”: $\begin{matrix} {b_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad M_{i - {2^{t} \cdot n_{j}}}}} & (3) \end{matrix}$

[0049] The calculations are performed in parallel, using one and the same number of logical operations (which is preferably minimal and equals to w−1), due to that the calculation time is independent from the length of the pattern (i.e., from the width of the bus). Results of the S parallel calculations are synchronously fed to the bus 15, and simultaneously and synchronously “shifted back” to respective bits of the register 22.

[0050]FIG. 3 shows how a PRBS sequence 1+X⁹+X¹¹ can be obtained by the described generator. In this example, the bus width S=128. Positions 30 of the bus b₀, b₁, . . . b₁₂₇, whenever obtained by logical XOR assemblies 31, are transmitted over the bus and, at the same time clock, are shifted in parallel back to the memory 32. Positions of the top register 34 of the memory are indicated as M⁻¹²⁸, M⁻¹²⁷, . . . , M⁻², M⁻¹ to express their previous state in time with respect to respective positions of the bus. At the next clock, contents of the top register 34 of the memory are shifted into the next register 36.

[0051] Using formula (5), the minimal value of the retrospective index t_(m) can be calculated: t_(m)=log₂ (128/9)=4.

[0052] Then, using formula (6), capacity C of the memory can be calculated as follows: C=2⁴*11=176.

[0053] It can be seen that for creating the required PRBS pattern for quite a wide bus (S=128), only 176 bits of memory are needed i.e., one complete register of 128 bits, and a second incomplete one. For creating this PRBS pattern in a conventional way, a much greater memory would be required.

[0054] As has been mentioned, each bit of a particular PRBS pattern is calculated:

[0055] based on a given polynomial having “w” members,

[0056] independently from calculating other bits of the particular PRBS pattern, and

[0057] using a constant number N of logical operations of exclusive OR, thereby enabling parallel calculation of all S bits of the particular PRBS pattern.

[0058] In this embodiment, keeping in mind that:

[0059] in the given polynomial we have two terms (w=2); n_(j) takes two values equal to 11 and 9 respectively; and that N=1,

[0060] we obtain particular positions of the PRBS pattern on the bus, using formula (3):

b ₀ =M _((0−16*11)) ⊕M _(90−16*9)) =M ⁽⁻¹⁷⁶⁾ ⊕M ⁽⁻¹⁴⁴⁾

. . .

b ₁₂₇ =M ⁽¹²⁷⁻¹⁷⁶⁾ ⊕M ⁽¹²⁷⁻¹⁴⁴⁾ =M ⁽⁻⁴⁹⁾ ⊕M ⁽⁻¹⁷⁾.

[0061] While the present invention has been described with reference to one particular example, it should be appreciated that other versions of the method and other implementations of the PRBS generator can be proposed based on the disclosed concept, which should all be considered part of the present invention. 

1. A method for high speed generating an S-bit long pattern of a PRBS sequence, to be periodically burst on to a bus of width S, the method comprising calculation of all S bits of the PRBS pattern separately and in parallel by using previous PRBS patterns stored in a memory and by performing, for each bit to be generated, a constant number N of logical operations required by a given polynomial, so that the calculation time is independent from the width S of the bus.
 2. The method according to claim 1, wherein the constant number N of logical operations is the minimal number of logical operations “exclusive OR” (XOR) being equal to w−1, where w is the number of terms in the given polynomial.
 3. The method according to claim 1, wherein the minimal time required for calculation the PRBS pattern is O(logw), where w is the number of terms in the given polynomial.
 4. The method according to claim 1, comprising calculating each bit of the S-width bus using bits of the memory and according to the following equation: $\begin{matrix} {{b_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}\quad M_{i - {2^{t} \cdot n_{j}}}}},} & (3) \end{matrix}$

where w—is the number of terms in the given polynomial; b—running number of a bit of the S-width bus; M—running number of a bit of the memory; t—retrospective index, for choosing an appropriate bit of a previous PRBS pattern stored in the memory; n_(j)—index of complexity of the given polynomial, or a power of term “j”.
 5. The method according to claim 4, comprising selecting different retrospective indexes t for calculating different bits of the bus.
 6. A generator for generating an S-bit long pattern of a PRBS sequence to be periodically burst on to a bus of width S, the generator comprising a memory and being capable of obtaining all bits of the PRBS pattern separately and in parallel by using previous PRBS patterns stored in the memory and performing for each bit of the pattern to be generated a constant number N of logical operations required by a given polynomial, thus achieving the shortened clock period of the generator, being independent from the width of the bus.
 7. The generator according to claim 6, wherein the memory comprises a number of shift registers for respectively storing successively generated S-bit PRBS patterns; the memory having a bottom register and a top register connected to the bus, and being capable of parallel shifting of information upon introducing a “freshest” PRBS pattern into the top register from the bus, so that an “oldest” PRBS pattern is erased from the bottom register of the memory; S sets of N* (XOR means) for obtaining the S-long PRBS pattern, wherein said N*(XOR means) being provided per each particular bit of the bus for creating the value of said particular bit based on bits of the previous PRBS patterns stored in the memory; the generator also comprising a clock for synchronizing operation of the XOR means of all the bits thereby obtaining a current said PRBS pattern, transmitting it via the bus and shifting it into the top register of the memory.
 8. The generator according to claim 6, wherein the number N is the minimal number being equal to w−1, where w is the number of terms in the given polynomial.
 9. The generator according to claim 6, wherein said stored bits being respectively selected for each bit of the S-width bus according to the following equation: $\begin{matrix} {{b_{i} = {\sum\limits_{0 \leq j < w}^{\oplus}M_{i - {2^{t} \cdot n_{j}}}}},} & (3) \end{matrix}$

where w—is the number of terms in the given polynomial; b_(i)—running number of a bit of the S-width bus; M_(i)—running number of a bit of the memory; t—retrospective index, for choosing an appropriate previous bit of PRBS pattern in the memory; n_(j)—index of complexity of the given polynomial, or a power of term “j”.
 10. The generator according to claim 6, wherein capacity C of the memory is selected according to the following formula: c=2^(t) ^(_(m)) ·n _(w−1)  (6) wherein w—is the number of terms in the given polynomial; t—retrospective index, for choosing an appropriate previous bit of PRBS pattern in the memory; n_(j)—index of complexity of the given polynomial, or a power of term “j”. t_(m)—is the minimal retrospective index calculated according to: $\begin{matrix} {t_{m} = \left\lceil {\log_{2}\frac{s}{n_{0}}} \right\rceil} & (5) \end{matrix}$


11. The generator according to claim 9, wherein different retrospective indexes t are selected for calculating different bits of the bus.
 12. The generator according to claim 10, wherein different retrospective indexes t are selected for calculating different bits of the bus, and wherein capacity C′ of the memory is selected as follows: c′=c−2^(t) ^(_(m)) ⁻¹  (7) 